use syn::{punctuated::Punctuated, token::Comma, FnArg, Ident, ReturnType, Visibility};

#[allow(dead_code)]
/// Print the log of the parameters os TokenStream
///
/// # parameters
///
/// - `vis`: The visibility of the function
/// - `ident`: The identifier of the function
/// - `block`: The block of the function
/// - `inputs`: The inputs of the function
/// - `output`: The output of the function
///
pub(crate) fn print_log<T>(
    vis: &Visibility,
    ident: &Ident,
    block: &T,
    inputs: &Punctuated<FnArg, Comma>,
    output: &ReturnType,
) where
    T: std::fmt::Debug,
{
    let vis_fmt = format!("{:?}", vis);
    let block_fmt = format!("{:#?}", block);
    println!("{}", "#".repeat(40));
    println!("vis: {}", vis_fmt);
    println!("{}", "#".repeat(40));
    println!("ident: {}", &ident);
    println!("{}", "#".repeat(40));
    println!("block: {}", block_fmt);
    println!("{}", "#".repeat(40));
    println!("inputs: {:#?}", inputs);
    println!("{}", "#".repeat(40));
    println!("output: {:#?}", output);
    println!("{}", "#".repeat(40));
}
